package com.yy.device.api.web;

/**
 * API结果枚举定义
 *
 * <p>
 * Invalid和Illegal的区别：
 * 一般情况下，值在系统中不存在用Invalid，值存在但是不合法用Illegal。
 * <p>
 * 如过上游指定了一个系统不存在的坐标，那么此时应该使用Invalid；
 * <p>
 * 如果上游指定了一个存在的坐标，但此坐标是一个障碍，那么应该返回Illegal。
 * <p>
 *
 * @author sunzhiqiang
 * @since 2.5.0
 */
public enum APIResult {
    /**
     * 成功
     **/
    OK(0, "success"),

    /**
     * 异常或其它未知错误
     **/
    ERROR(100, "error"),
    ;

    private final int code;
    private final String msg;

    APIResult(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public int getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }


    /**
     * 值代码
     * 找不到返回ERROR
     *
     * @param code 代码
     * @return {@link APIResult}
     */
    public static APIResult valueOfCode(int code) {
        for (APIResult result : values()) {
            if (result.getCode() == code) {
                return result;
            }
        }
        return ERROR;
    }

}
